class Solution {
public:
    bool isValid(string s) {
        stack<char> st;
        for (const auto& e : s) {
            if (st.empty())
                st.push(e);
            else {
                char t = st.top();
                if (e == ')') {
                    if (t != '(')
                        return false;
                    else
                        st.pop();
                } else if (e == '}') {
                    if (t != '{')
                        return false;
                    else
                        st.pop();
                } else if (e == ']') {
                    if (t != '[')
                        return false;
                    else
                        st.pop();
                } else {
                    st.push(e);
                }
            }
        }
        return st.empty();
    }
};